package midalgorithms.arrandstr;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class _03GroupAnagrams {
    public static List<List<String>> groupAnagrams(String[] strs) {
        int len = strs.length;
        if (len == 0){
            return new ArrayList<>();
        }
        //  *注意这里的value值！！！
        //  哈希表的value可以存储一群有共同特征的元素！！！
        HashMap<String,List<String>> hashMap = new HashMap<>();
        //  遍历字符串数组
        for (int i = 0;i < len;i++){
            //  字符串不可排序，但字符数组可以
            //String str = Arrays.sort(strs[i]);
            char[] chars = strs[i].toCharArray();
            Arrays.sort(chars);
            //  重要方法：String.valueOf()
            String sortedStr = String.valueOf(chars);
            //  如果哈希表里没得这玩意，就存
            if (!hashMap.containsKey(sortedStr)){
                hashMap.put(sortedStr,new ArrayList<>());
            }
            hashMap.get(sortedStr).add(strs[i]);
        }
        //  *values方法返回一个集合对象，里面存储了所有value
        return new ArrayList<>(hashMap.values());
    }
}
